package cn.jdy.authority.service;

import cn.jdy.framework.db.hibernate.BaseDao;
import cn.jdy.framework.exception.BaseException;
import cn.jdy.framework.log.BaseLog;
import cn.jdy.authority.entity.Organ;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 组织机构信息接口类实现类
 *
 * @description: 组织机构信息接口实现类
 * @author: Wuzhiliang
 * @date: 2013-08-05 16 20
 */
@Service
public class OrganService extends BaseDao<Organ> {

	/**
	 * 修改组织机构状态
	 *
	 * @param organIds 组织机构ID void
	 * @description:修改组织机构状态
	 */
	@Transactional
	public void updOrgStatus(String isactive, String organIds) {
		try {
			String[] orgids = organIds.split(",");
			for(String orgid : orgids) {
				Organ org = super.findOne("id", orgid);
				org.setIsactive(isactive);
				super.update(org);
			}
		} catch(BaseException e) {
			BaseLog.e(this.getClass(), "updOrgStatus 修改组织机构状态出错！", e);
		}
	}

	/**
	 * 删除组织机构信息
	 *
	 * @param organIds 组织机构ID void
	 * @description:删除组织机构信息
	 */
	@Transactional
	public void delOrgan(String organIds) {
		try {
			super.delete(organIds.split(","), "id");
		} catch(BaseException e) {
			BaseLog.e(this.getClass(), "delOrgan 删除组织机构信息出错！", e);
		}
	}

	/**
	 * 查找组织机构信息记录数量
	 *
	 * @param ：bo 组织机构信息实体bean int count
	 * @description:查找组织机构信息记录数量
	 */
	public int findOrganCount(Organ bo) {
		try {
			DetachedCriteria dc = DetachedCriteria.forClass(super.entityClass);
			dc.add(Restrictions.eq("pid", bo.getPid()));
			// 过滤查询记录数
			Long count = super.count(dc);
			return Integer.parseInt(String.valueOf(count));
		} catch(BaseException e) {
			BaseLog.e(this.getClass(), "findCodeInfoCount 查询代码信息记录总数出错！", e);
		}
		return 0;
	}

}
